package top.hmtools.ckfinder.configuration;

import top.hmtools.ckfinder.command.base.BaseGetFilesCommand;
import top.hmtools.ckfinder.command.base.BaseGetFoldersCommand;
import top.hmtools.ckfinder.command.base.BaseInitCommand;
import top.hmtools.ckfinder.enums.ECommandHandler;

/**
 * 非常重要的基本设置类，此类用于根据对接文件管理方案扩展设置具体执行指令。
 * @author Hybomyth
 *
 */
public abstract class  BaseCommandConfig implements ICommandConfig {

	@Override
	public void init() {
		//设置“初始化指令”
		System.out.println("init >>>> "+ECommandHandler.INIT.getCommand());
		this.setInitCommand(ECommandHandler.INIT);
		System.out.println("init >>>> "+ECommandHandler.INIT.getCommand());
		if(ECommandHandler.INIT.getCommand() instanceof BaseInitCommand){
		}else{
			throw new IllegalStateException("设置的初始化命令类不是 top.hmtools.ckfinder.command.InitCommand 的子孙类");
		}

		System.out.println("getfiles >>>> "+ECommandHandler.GETFILES.getCommand());
		this.setGetFilesCommand(ECommandHandler.GETFILES);
		System.out.println("getfiles >>>> "+ECommandHandler.GETFILES.getCommand());
		if(ECommandHandler.GETFILES.getCommand() instanceof BaseGetFilesCommand){
		}else{
			throw new IllegalStateException("设置的获取文件集合命令类不是top.hmtools.ckfinder.command.GetFilesCommand 的子孙类");
		}

		System.out.println("getfloders >>>>>> "+ ECommandHandler.GETFOLDERS.getCommand());
		this.setGetFoldersCommand(ECommandHandler.GETFOLDERS);
		System.out.println("getfloders >>>>>> "+ ECommandHandler.GETFOLDERS.getCommand());
		if(ECommandHandler.GETFOLDERS.getCommand() instanceof BaseGetFoldersCommand){
		}else{
			throw new IllegalStateException("设置的获取目录集合命令类不是top.hmtools.ckfinder.command.GetFoldeersCommand 的子孙类");
		}
	}
	
	/**
	 * 设置初始化的 指令
	 * @param initCmd
	 */
	public abstract void setInitCommand(ECommandHandler cmd);
	
	/**
	 * 设置获取文件列表信息的 指令
	 * @param cmd
	 */
	public abstract void setGetFilesCommand(ECommandHandler cmd);

	/**
	 * 设置 获取文件夹列表信息的 指令
	 * @param cmd
	 */
	public abstract void setGetFoldersCommand(ECommandHandler cmd);
}
